package com.coldtech.circlecrash.handler;

import java.awt.Graphics2D;
import java.util.ArrayList;
import java.util.List;

import com.coldtech.circlecrash.gui.Button;

public class ButtonHandler {
	private List<Button> buttonList = new ArrayList<Button>();

	public ButtonHandler() {

	}

	public void addButton(Button button) {
		buttonList.add(button);
	}

	public void removeButton(Button button) {
		buttonList.remove(button);
	}

	public void hover(int x, int y) {
		for (int i = 0; i < buttonList.size(); i++) {
			Button button = buttonList.get(i);
			if (button.isOnButton(x, y) && button.getState() != Button.HOVERED
					&& button.getState() != Button.PRESSED) {
				button.setState(Button.HOVERED);
			} else if (!button.isOnButton(x, y)) {
				button.setState(Button.NONE);
			}
		}
	}

	public void press(int x, int y) {
		for (int i = 0; i < buttonList.size(); i++) {
			Button button = buttonList.get(i);
			if (button.isOnButton(x, y) && button.getState() != Button.PRESSED) {
				button.setState(Button.PRESSED);
			} else if (!button.isOnButton(x, y)) {
				button.setState(Button.NONE);
			}
		}
	}

	public void release(int x, int y) {
		for (int i = 0; i < buttonList.size(); i++) {
			Button button = buttonList.get(i);
			if (button.isOnButton(x, y) && button.getState() == Button.PRESSED) {
				button.setState(Button.HOVERED);
				button.setClicked(true);
			} else if (!button.isOnButton(x, y)) {
				button.setState(Button.NONE);
			}
		}
	}

	public void reset() {
		for (int i = 0; i < buttonList.size(); i++) {
			Button button = buttonList.get(i);
			button.setClicked(false);
		}
	}

	public void draw(Graphics2D g) {
		for (int i = 0; i < buttonList.size(); i++) {
			buttonList.get(i).draw(g);
		}
	}
}
